package com.fizzkai.p2p.bussness.service;


import com.fizzkai.p2p.bussness.domain.ExpAccount;
import lombok.Getter;
import org.apache.commons.lang3.time.DateUtils;

import java.math.BigDecimal;
import java.util.Date;

public interface IExpAccountService {
    int save(ExpAccount entity);

    int update(ExpAccount entity);

    ExpAccount get(Long id);

    /**
     * 发放体验金
     *
     * @param id           体验账户 Id
     * @param money        发放金额
     * @param lastTime     有效期
     * @param expmoneyType 发放类型
     */
    void grantExpMoney(Long id, BigDecimal money, LastTime lastTime, int expmoneyType);

    /**
     * 有效期
     */
    @Getter
        // getter 用于获取, set 就在 new 设置
    class LastTime {
        private int amonut; // 有效期 值 无单位
        private LastTimeUnit unit;  // 单位

        public LastTime(int amonut, LastTimeUnit unit) {
            this.amonut = amonut;
            this.unit = unit;
        }

        public Date getReturnDate(Date date) {
            switch (unit) {
                case MONTH:
                    return DateUtils.addMonths(date, amonut);
                case DAY:
                    return DateUtils.addDays(date, amonut);
                case YEAR:
                    return DateUtils.addYears(date, amonut);
                default:
                    return date;
            }
        }
    }

    /**
     * 持续时间 单位，给有效期类 使用
     */
    enum LastTimeUnit {
        DAY, MONTH, YEAR
    }
}
